package cn.outsourcing.supermarket.converter;

import cn.outsourcing.supermarket.converter.transform.BooleanToIntegerTransform;
import cn.outsourcing.supermarket.converter.transform.IntegerToBooleanTransform;
import cn.outsourcing.supermarket.po.HiolabsProduct;
import cn.outsourcing.supermarket.vo.backstage.BackstageSpecDataVO;
import cn.outsourcing.supermarket.vo.hiolabs.HiolabsProductVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 产品转换器
 *
 * @author gzkemays
 * @since 2021/10/22 16:00
 */
@Mapper(uses = {BooleanToIntegerTransform.class, IntegerToBooleanTransform.class})
public interface HiolabsProductConverter {
  HiolabsProductConverter INSTANCE = Mappers.getMapper(HiolabsProductConverter.class);
  /**
   * 转化为自身值对象
   *
   * @param product 原 po 对象
   * @return 自身值对象
   */
  HiolabsProductVO convertToVo(HiolabsProduct product);
  /**
   * 转化为自身列表值对象
   *
   * @param product 原 po 列表对象
   * @return 自身值对象
   */
  List<HiolabsProductVO> convertToVoList(List<HiolabsProduct> product);

  /**
   * 后台数据部分数据提取为 po 对象
   *
   * @param specDataVO 后台数据
   * @return po 对象
   */
  HiolabsProduct convertBackstageDataToPo(BackstageSpecDataVO specDataVO);
  /**
   * 后台数据部分数据提取为 po 对象 list
   *
   * @param specDataVO 后台数据
   * @return po 对象 list
   */
  List<HiolabsProduct> convertBackstageDataToPoList(List<BackstageSpecDataVO> specDataVO);
}
